package com.fowo.api.model.platformshipping;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.DateTimeFormat;
import com.alibaba.excel.annotation.write.style.ContentStyle;
import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum;
import com.fowo.api.common.excel.ImageConvert;
import com.fowo.api.common.validator.EnumsString;
import com.fowo.api.sys.entity.SysFile;
import java.util.List;
import javax.validation.constraints.*;
import lombok.Getter;
import lombok.Setter;

/** 平台仓发货单 导入导出辅助模型 */
@Getter
@Setter
public class PlatformshippingExcelPo {

  @Size(max = 50, message = "发货单号长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "发货单号")
  private String shipmentCode;

  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "发货仓库")
  private String deliverywarehouseName;

  @ExcelIgnore
  @ExcelProperty(value = "发货仓库")
  private Long deliverywarehouse;

  @DateTimeFormat("yyyy年MM月dd日")
  @ExcelProperty(value = "发货时间")
  private java.util.Date deliveryTime;

  @EnumsString(
    value = { "待配货", "待发货", "已发货", "已作废" },
    message = "发货状态的可用值为 “待配货”, “待发货”, “已发货”, “已作废” 其中之一"
  )
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "发货状态")
  private String shippingstatus;

  @DateTimeFormat("yyyy年MM月dd日")
  @ExcelProperty(value = "到货时间")
  private java.util.Date arrivaltime;

  @Size(max = 50, message = "开船时间长度不能超过20")
  @DateTimeFormat("yyyy年MM月dd日")
  @ExcelProperty(value = "开船时间")
  private java.util.Date sailtime;

  @DateTimeFormat("yyyy年MM月dd日")
  @ExcelProperty(value = "预计到港时间")
  private java.util.Date expectedarrivaltime;

  @DateTimeFormat("yyyy年MM月dd日")
  @ExcelProperty(value = "实际妥投时间")
  private java.util.Date actualdueime;

  @DateTimeFormat("yyyy年MM月dd日")
  @ExcelProperty(value = "实际发货时间")
  private java.util.Date actualdeliverytime;

  @Size(max = 50, message = "物流中心编码长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "物流中心编码")
  private String logisticscode;

  @Size(max = 50, message = "物流信息长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "物流信息")
  private String logisticsInfo;

  @Size(max = 50, message = "备注长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "备注")
  private String remarks;

  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "物流商")
  private String logisticsproviderName;

  @ExcelIgnore
  @ExcelProperty(value = "物流商")
  private Long logisticsprovider;

  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "物流方式")
  private String logisticsproviderIdName;

  @ExcelIgnore
  @ExcelProperty(value = "物流方式")
  private Long logisticsproviderId;

  @EnumsString(
    value = {
      "按计费重", "按实重", "按体积重", "按SKU", "按箱子体积", "自定义",
    },
    message = "分摊方式的可用值为 “按计费重”, “按实重”, “按体积重”, “按SKU”, “按箱子体积”, “自定义” 其中之一"
  )
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "分摊方式")
  private String headfeetype;

  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "发货人")
  private String sendgoodspeopleName;

  @ExcelIgnore
  @ExcelProperty(value = "发货人")
  private Long sendgoodspeople;

  @EnumsString(
    value = { "状态1", "状态2" },
    message = "订单物流状态的可用值为 “状态1”, “状态2” 其中之一"
  )
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "订单物流状态")
  private String orderlogisticsstatus;

  @Size(max = 50, message = "负责人长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "负责人")
  private String principalusernameName;

  @ExcelIgnore
  @ExcelProperty(value = "负责人")
  private Long principalusername;

  @ExcelProperty(value = "附件", converter = ImageConvert.class)
  private List<SysFile> fj;

  @EnumsString(
    value = { "是", "否" },
    message = "拣货状态的可用值为 “是”, “否” 其中之一"
  )
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "拣货状态")
  private String pickingnot;
}
